<template>
	<div id="login">
		<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
			<el-form-item label="用户名" prop="userName">
				<el-input type="text" v-model="ruleForm.userName"></el-input>
			</el-form-item>

			<el-form-item label="密码" prop="userPwd">
				<el-input type="password" v-model="ruleForm.userPwd"></el-input>
			</el-form-item>

			<el-form-item>
				<el-button type="primary" @click="submitForm()">登录</el-button>
				<el-button @click="resetForm()">重置</el-button>
			</el-form-item>
		</el-form>
	</div>
</template>


<script>
	export default {
		data() {
			return {
				ruleForm: {
					userName: '',
					userPwd: ''
				},
				rules: {
					userName: [{
							required: true,
							message: '请输入用户名',
							trigger: 'blur'
						},
						{
							min: 3,
							max: 5,
							message: '长度在 5 到 20 个字符',
							trigger: 'blur'
						}
					],
					userPwd: [{
							required: true,
							message: '请输入密码',
							trigger: 'blur'
						},
						{
							min: 3,
							max: 5,
							message: '长度在 5 到 20 个字符',
							trigger: 'blur'
						}
					]
				}
			};
		},
		methods: {
			// 提交表单
			submitForm() {
				// 表单验证
				this.$refs['ruleForm'].validate((valid) => {
					// 条件成立：表单验证成功，提交表单向后端发起登录请求
					if (valid) {
						// 向后端发起异步请求,进行登录(前端调用后端的API)
						this.$axios.post('http://localhost:8097/account/login', {
								userName: this.ruleForm.userName,
								userPwd: this.ruleForm.userPwd
							})
							// then(resp)方法是一个回调方法，用来接收后端返回的结果。resp封装了后端返回给前端的所有数据
							.then((resp) => {
								// 接收后端返回给前端的数据
								// 条件成立：表示登录成功，跳转到“送水工管理系统”主页面
								// 前端resp.data等价于够短的CommonResult对象
								if (resp.data.responseMessage == 'success') {
									this.$message.success("登录成功");
									this.$router.push({
										name: "Index"
									});
								} else {
									this.$message.error("用户名或密码错误");
								}
							})
							// catch(error) 也是一个回调方法，当前端请求没有到达后端就会调用此方法
							// error封装了异常信息
							.catch((error) => {
								this.$message.error("登录请求发送失败");
								console.log(error);
							})
					}
				});
			},
			// 重置表单
			resetForm() {
				this.$refs['ruleForm'].resetFields();
			}
		}
	}
</script>

<style>
	.demo-ruleForm {
		max-width: 500px;
		margin: 0px auto;
	}

	h1 {
		text-align: center;
	}

	#login {
		margin: 50px auto;
	}
</style>
